﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Configuration;
using CG67.EspaceRencontre.Outils;

namespace CG67.EspaceRencontre.AccesDonnees
{
    public class RendezVousDB
    {
        #region Attributs
        /// <summary>
        /// chaine de connexion figurant dans Web.config
        /// </summary>
        private static ConnectionStringSettings connexionString = ConfigurationManager.ConnectionStrings["connexionEspaceRencontre"];
        #endregion

        #region GetRendezVousById
        /// <summary>
        /// récupère les informations d'un RDV identifié par son id
        /// </summary>
        /// <param name="id"><c>int</c> : identifiant du RDV</param>
        /// <returns><c>DataSet</c></returns>
        public static DataSet GetRendezVousById(int id)
        {
            String query = "SELECT * FROM RENDEZVOUS WHERE ID ='" + id + "'";
            DataSet res = BaseDeDonnee.BuildDataSet(query, connexionString);
            return res;
        }
        #endregion

        #region GetAllRendezVous
        /// <summary>
        /// récupère la liste de tous les RDV
        /// </summary>
        /// <returns><c>DataSet</c></returns>
        public static DataSet GetAllRendezVous()
        {
            String query = "SELECT * FROM RENDZEVOUS";
            DataSet res = BaseDeDonnee.BuildDataSet(query, connexionString);
            return res;
        }
        #endregion

        #region GetRendezVousByTravailleurSocialId
        /// <summary>
        /// recupère une liste des RDV d'un travailleur social
        /// </summary>
        /// <param name="id"><c>int</c> : identifiant du travailleur social</param>
        /// <returns><c>DataSet</c></returns>
        public static DataSet GetRendezVousByTravailleurSocialId(int id)
        {
            String query = "SELECT * FROM RENDEZVOUS WHERE IDTRAVAILLEURSOCIAL = '" + id + "'";
            DataSet res = BaseDeDonnee.BuildDataSet(query, connexionString);
            return res;
        }
        #endregion

        #region CreateRendezVous
        /// <summary>
        /// ajoute un nouveau RDV
        /// </summary>
        /// <param name="debut"><c>DateTime</c> : date et heure de début</param>
        /// <param name="fin"><c>DateTime</c> date et heure de fin</param>
        /// <param name="idTypeRendezVous"><c>int</c> : type du rendez-vous</param>
        /// <param name="idTravailleurSocial"><c>int</c> numéro d'identification du travailleur social</param>
        public static void CreateRendezVous(DateTime debut, DateTime fin, int idTypeRendezVous, int idTravailleurSocial)
        {
            BaseDeDonnee.ExecuteNonQuery("INSERT INTO RENDEZVOUS([DEBUT], [FIN], [IDTYPERENDEZVOUS], [IDTRAVAILLEURSOCIAL]) values('" + debut + "', '" + fin + "', '" + idTypeRendezVous + "', '" + idTravailleurSocial + "')", connexionString);
        }
        #endregion

        #region UpdateRendezVous
        /// <summary>
        /// màj un RDV
        /// </summary>
        /// <param name="id"><c>int</c> : identifiant du RDV</param>
        /// <param name="debut"><c>DateTime</c> : date et heure de début</param>
        /// <param name="fin"><c>DateTime</c> date et heure de fin</param>
        /// <param name="idTypeRendezVous"><c>int</c> : type du rendez-vous</param>
        /// <param name="idTravailleurSocial"><c>int</c> numéro d'identification du travailleur social</param>
        public static void UpdateRendezVous(int id, DateTime debut, DateTime fin, int idTypeRendezVous, int idTravailleurSocial)
        {
            BaseDeDonnee.ExecuteNonQuery("UPDATE TRAVAILLLEURSOCIAL SET [DEBUT]='" + debut + "', [FIN]='" + fin + "', [IDTYPERENDEZVOUS]='" + idTypeRendezVous + "', [IDTRAVAILLEURSOCIAL]='" + idTravailleurSocial + "' WHERE ID='" + id + "'", connexionString);
        }
        #endregion

        #region AddEnfantToRendezVous
        /// <summary>
        /// ajoute un enfant à un RDV déjà créé
        /// </summary>
        /// <param name="idRendezVous"><c>int</c> : identifiant du RDV</param>
        /// <param name="idEnfant"><c>int</c> : identifiant de l'enfant</param>
        public static void AddEnfantToRendezVous(int idRendezVous, int idEnfant)
        {
            BaseDeDonnee.ExecuteNonQuery("INSERT INTO RENDEZVOUS_ENFANT([IDRENDEZVOUS], [IDENFANT]) values('" + idRendezVous + "', '" + idEnfant + "')", connexionString);
        }
        #endregion

        #region DeleteRendezVous
        /// <summary>
        /// supprime un RDV de la BDD
        /// </summary>
        /// <param name="id"><c>int</c> : identifiant du RDV</param>
        public static void DeleteRendezVous(int id)
        {
            String queryRendezVousEnfant = "DELETE FROM [RENDEZVOUS_ENFANT] WHERE [IDRENDEZVOUS] ='" + id + "'";
            String queryRendezVous = "DELETE FROM [RENDEZVOUS] WHERE [ID] ='" + id + "'";

            BaseDeDonnee.ExecuteNonQuery(queryRendezVousEnfant, connexionString);
            BaseDeDonnee.ExecuteNonQuery(queryRendezVous, connexionString);
        }
        #endregion

        #region DeleteRendezVousByEnfantId
        /// <summary>
        /// supprime tous les RDV d'un enfant
        /// </summary>
        /// <param name="idEnfant"><c>int</c> : identifiant de l'enfant</param>
        public static void DeleteRendezVousByEnfantId(int idEnfant)
        {
            BaseDeDonnee.ExecuteNonQuery("DELETE FROM [RENDEZVOUS_ENFANT] WHERE IDENFANT='" + idEnfant + "'", connexionString);
        }
        #endregion

        #region UnassignEnfantFromRendezVous
        /// <summary>
        /// enlève un enfant d'un RDV
        /// </summary>
        /// <param name="idRendezVous"><c>int</c> : identifiant du rendez-vous</param>
        /// <param name="idEnfant"><c>int</c> : identifiant de l'enfant</param>
        public static void UnassignEnfantFromRendezVous(int idRendezVous, int idEnfant)
        {
            BaseDeDonnee.ExecuteNonQuery("DELETE FROM [RENDEZVOUS_ENFANT] WHERE IDRENDEZVOUS='" + idRendezVous + "' AND IDENFANT='" + idEnfant + "'", connexionString);
        }
        #endregion
    }
}
